Image stitching

ABSTRACT

A computing device is described which has a memory holding at least two input images depicting different parts of a panoramic scene, the images having been captured by a user moving the camera by hand to capture the panorama. The computing device has an image stitching component configured to identify, at a processor, a region of overlap between the at least two images and to calculate a displacement vector for each of a plurality of warp points in the region of overlap. The image stitching component is arranged to warp a second one of the at least two images using the warp points; and to join the warped second image to the first image.

BACKGROUND

Cameras available on camera phones, tablet computers, or other mobilecomputing devices are of increasingly high quality. Dedicated digitalcameras are also increasingly widely available in hand-held, portableform. However, digital cameras, as with other types of camera, generallyhave a fairly limited field of view so that it is difficult to capturepanoramic scenes. One approach is to capture multiple photographs withoverlapping fields of view by moving the camera to a new location foreach photograph. The multiple digital photographs are then stitchedtogether to form a panoramic image.

The embodiments described below are not limited to implementations whichsolve any or all of the disadvantages of known image stitchingapparatus.

SUMMARY

The following presents a simplified summary of the disclosure in orderto provide a basic understanding to the reader. This summary is notintended to identify key features or essential features of the claimedsubject matter nor is it intended to be used to limit the scope of theclaimed subject matter. Its sole purpose is to present a selection ofconcepts disclosed herein in a simplified form as a prelude to the moredetailed description that is presented later.

A computing device is described which has a memory holding at least twoinput images depicting different parts of a panoramic scene, the imageshaving been captured by a user moving the camera by hand to capture thepanorama. The computing device has an image stitching componentconfigured to identify, at a processor, a region of overlap between theat least two images and to calculate a displacement vector for each of aplurality of warp points in the region of overlap. The image stitchingcomponent is arranged to warp a second one of the at least two imagesusing the warp points; and to join the warped second image to the firstimage.

Many of the attendant features will be more readily appreciated as thesame becomes better understood by reference to the following detaileddescription considered in connection with the accompanying drawings.

DESCRIPTION OF THE DRAWINGS

The present description will be better understood from the followingdetailed description read in light of the accompanying drawings,wherein:

FIG. 1 is a schematic diagram of a mobile computing device with a cameraused to capture a photograph of a panorama of pyramids in the desert;

FIG. 2 is a schematic diagram of a stitched panoramic photograph of thescene of FIG. 1 and showing three digital photographs used to create thestitched panoramic photograph;

FIG. 3 is a flow diagram of a method at an image stitching component;

FIG. 4 is a schematic diagram of two overlapping digital images and withan enlargement of part of an overlapping region showing a warp grid;

FIG. 5 is a graph of similarity cost against displacement;

FIG. 6 is a schematic diagram of a similarity cost map;

FIG. 7 is a schematic diagram of another similarity cost map;

FIG. 8 is a schematic diagram of a computing-based device in whichembodiments of an image stitching component are implemented;

FIG. 9 is a schematic diagram of a camera with an image stitchingcomponent.

Like reference numerals are used to designate like parts in theaccompanying drawings.

DETAILED DESCRIPTION

The detailed description provided below in connection with the appendeddrawings is intended as a description of the present examples and is notintended to represent the only forms in which the present example areconstructed or utilized. The description sets forth the functions of theexample and the sequence of operations for constructing and operatingthe example. However, the same or equivalent functions and sequences maybe accomplished by different examples.

As mentioned above, cameras generally have a limited field of view sothat it is difficult to capture panoramic scenes. One approach is tocapture multiple photographs with overlapping fields of view by movingthe camera for each photograph. For example, by rotating the camera orby pointing the camera in a slightly different direction. The resultingmultiple digital photographs are then projected/aligned and stitchedtogether to form a panoramic image. However, due to parallax whichoccurs as a result of motion of the camera, and/or motion of objects inthe scene, the resulting stitched image is often inaccurate and containsartifacts such as lines or other features which do not depict realsurfaces in the scene. The term “overlapping” is used to mean that onefield of view covers at least part of another field of view. In the caseof sweep panorama, where a user sweeps his or her image capture devicewhilst images are being captured, the percentage of overlap can be asmuch as 95% or more. However, the examples described herein are alsoapplicable for situations where the amount of overlap is less than 50%.

In the examples described herein a hand held, head mounted, or body worncamera is used to capture a plurality of digital images of differentparts of a scene. For example, a user makes a sweeping motion with hisor her camera phone and captures a series of digital images. Because thecamera is not in a controlled camera rig there are unknown changes inyaw (horizontal rotation), pitch, roll and translation of the camera. Inaddition, minor and/or major motions of objects in the scene often occur(such as people walking, cars driving, waves moving on water, treesmoving in the wind, clouds moving in the sky). As a result it isimpossible in many cases to perfectly align two images by applying asingle transform (projection), since different parts of the images areto be aligned differently. Finding a seam between two images, alongwhich the difference between the images is minimized enables a panoramicimage to be formed. However, on its own this approach cannot mitigateall artifacts causes by parallax as it does not give good localalignment in the case of camera motions which include changes in yaw(horizontal rotation), pitch, roll and translation, such as is typicalfor hand held, head mounted, and body worn cameras.

The examples described herein relate to an image stitching process whichis particularly efficient (in terms of memory use and/or processingcapacity) and which gives good quality results where parallax artifactsare ameliorated. The process is configured to use multi-threading wherepossible although this is not essential and in some embodiments theprocess is implemented on a central processing unit (CPU) of a cameraphone, digital camera or cloud service infrastructure. A warp field iscomputed in a simple, efficient manner and used to warp an overlappingregion of a second image. The warped second image is then stitched to afirst image yielding high quality results in a fast manner. The secondimage is warped in a manner which enables parallax, due to motion (ofthe camera and/or scene), to be taken into account. The warped secondimage is stitched to the first image along a seam computed to give goodquality results.

A warp field is approximated as a plurality of displacement vectors, onefor each of a plurality of points arranged in a tessellation, where thepoints correspond to pixel locations of an image to be warped. Typicallythe warp field has fewer points than there are pixels in the image butthis is not essential. A warp field is used to specify a mapping to beapplied to an image whereby color values stored at pixel locations aremoved according to displacement vectors specified in the field. Wherethe warp field, approximated as a tessellation of points (referred toherein as a warp tessellation), has fewer points than there are pixelsin the image, interpolation is used to calculate displacement vectors toapply to pixels which do not lie directly under a tessellation point.How to obtain the displacement vectors in an efficient manner, whichstill gives good quality results, is described in more detail below. Forexample, it involves computing the warp field approximation for a regionof overlap rather than for a complete image. For example, it involvescomputing the displacement vectors using comparisons between two images,for points in the warp tessellation along a line in the region ofoverlap, and then interpolating displacement vectors for other points inthe warp tessellation. This reduces the number of memory look ups forthe image comparisons and it reduces the number of calculations.

FIG. 1 is a schematic diagram of a hand held mobile computing device 100with a camera 102 used to capture a digital image of part of a panorama114 of pyramids in a desert with clouds in the sky. In some examples thecamera is in a head worn computing device or a body worn computingdevice. The camera 102 has a field of view 112 which is limited so thatthe complete panorama 114 cannot be captured in a single image by thecamera 102. The camera 102 is a digital camera, such as a digital colorcamera, a digital greyscale or monochrome camera, a web camera, a camerain a smart phone, a camera in a tablet computer, or any other hand heldcamera or hand held device incorporating a camera. The camera is a videocamera in some examples, where still frames of the video are to bestitched together to form a panoramic image.

In the example of FIG. 1 the panorama comprises a scene of pyramids inthe desert for illustration purposes. The computing device 100 can alsobe used to capture panoramas which are in a near field of the camerarather than remote of the camera as in the FIG. 1 example. A panorama isany wide-angle view of a scene, independent of the distance of the scenefrom the camera.

The computing device 100 incorporates an image stitching component 110in some examples. In some examples the computing device 100 is incommunication with an image stitching component 110 via a communicationsnetwork 118 such as the internet, an intranet, a wireless network, awired network or another type of communications network 118.

The computing device 100 is described in more detail with reference toFIG. 8 below and in summary the computing device comprises a camera 102,a processor 104, a memory 106, a communications interface 108 (such asto communicate with image stitching component 110 via communicationsnetwork 118), and an image stitching component 110 in some cases. Insome examples, the computing device 100 is itself a digital camera suchas the digital camera of FIG. 9 described below. In some cases thecomputing device 100 is a camera phone, a tablet computer with a camera,a laptop computer with a camera, a stylus with a camera or another typeof hand held computing device with a camera. In some examples thecomputing device 100 is a head worn computing device or a body worncomputing device. Where the computing device is head worn the use isable to make the sweep motion of the camera by moving his or her head.

The image stitching component 110 is implemented using any one or moreof: software, hardware, firmware. For example, in some cases thefunctionality of the image stitching component 110 is performed, atleast in part, by one or more hardware logic components. For example,and without limitation, illustrative types of hardware logic componentsthat are optionally used include Field-programmable Gate Arrays (FPGAs),Application-specific Integrated Circuits (ASICs), Application-specificStandard Products (ASSPs), System-on-a-chip systems (SOCs), ComplexProgrammable Logic Devices (CPLDs), Graphics Processing Units (GPUs). Insome examples, the image stitching component uses multi-threadingimplemented on a parallel processing unit such as a graphics processingunit. However, this is not essential as the image stitching component isimplemented on a central processing unit (CPU) in some examples.

In the case that the image stitching component 110 is located remote ofthe computing device 100 the computing device 100 sends a plurality ofimages of a scene (in compressed form in some cases, although it is notessential to use a compressed form) to the image stitching component 110over the communications network 118. The image stitching componentcomputes a panoramic image by stitching the plurality of imagestogether, and returns the panoramic image to the computing device 100via the communications network 118.

FIG. 2 shows schematically a panoramic image 200 created by the imagestitching component from images captured by the computing device 100 ofFIG. 1 depicting the pyramid scene. The dotted lines in image 200 arenot part of the image and are included to aid understanding of how theimage 200 is formed from three individual images 202, 204, 206 stitchedtogether. In this example, the user has moved the camera by horizontalrotation to capture images 202, 204 and 206. In practice the cameramotion includes one or more of horizontal rotation (changes in yaw),translation (for example, in the z direction towards or away from thepyramids), torsional rotation, changes in pitch. However, onlyhorizontal rotation is represented approximately in FIG. 2 for ease ofexplanation.

The panoramic image is a composite formed from parts of the individualimages 202, 204, 206 as it is seen from FIG. 2 that the individualimages have an aggregate length which is longer than the panoramicimage. The individual images have an aggregate width which is wider thanthe panoramic image in some examples.

FIG. 3 is a flow diagram of a method of operation at an image stitchingcomponent 110 such as that of FIG. 1. The image stitching componentreceives 300 a first and a second image. For example, it accesses theimages from memory 106 or receives the images directly from the camera102. The first and second images have been captured in order to form apanoramic image, for example, where the user sweeps the computing device100 in an arc type motion whilst the images are captured.

The image stitching component aligns the first and second images 302 byfinding a projection of one image with respect to the other image suchthat there is a good correspondence between features depicted in theimages. The features are lines, edges, corners, color values, texture,or other content features of an image. The alignment is computedautomatically by the image stitching component, for example, bycomputing an optimization to search the space of possible alignments.Once the alignment has been computed, an amount of overlap between thetwo images for the computed alignment is found. For example, the amountof overlap is expressed as a proportion of the image size.

A check is made 304 as to whether the amount of overlap meets criteria,such as being greater than a first specified threshold and less than asecond specified threshold. In an example, the amount of overlap meetscriteria if it is more than 5% of the image area and less than 100% ofthe image area. For example, in the case of sweep-panorama, where a usermakes an arc type sweeping motion of the image capture device whilstimages are being captured, the amount of overlap is often 95% or more.In point-and-shoot type scenarios the amount of overlap is often around50%. These are examples only and other values may be used. If the amountof overlap is too big then the stitching will not produce a panoramicimage showing that much more of the panorama than either of the imagesalone. If the amount of overlap is too small then it becomes difficultto compute a high quality alignment, warp and stitching of the imagestogether.

If the overlap fails to meet the criteria then one or both of the imagesare rejected and the process returns to operation 300. If the criteriaare met the image stitching component proceeds to position 306 a warpline in the overlapping region. The warp line comprises a column of awarp tessellation and it is a straight line in some cases, positioned soas to divide the region of overlap approximately in half longitudinally.The image stitching component positions 308 warp points on the warp linewhere the warp points are points selected from the warp tessellation.The spacing between the warp points is varied according to a trade-offbetween computational resources and quality. The warp tessellation is aplurality of locations in the overlapping region and, at this stage, thedisplacement vectors associated with the locations is not yet known. Thelocations form a tessellation which covers all or part of theoverlapping region and, in some examples, extends into areas of a secondimage which are outside the overlapping region as explained in moredetail below.

Computing displacement vectors for the locations of the warptessellation is resource intensive where it involves making comparisonsbetween the two images. This is because many similarity metrics used tomake the comparison required significant computation. Also, to make thecomparisons, memory look ups to the two images are needed to retrieveintensity values in one or more color bands of the two images. Thesememory looks ups are themselves resource intensive. Therefore the imagestitching unit computes the displacement vectors in this manner for somebut not all of the warp tessellation locations in some examples. Thechoice of which warp tessellation locations to use is made using thewarp line and by selecting points on the warp line.

The image stitching component computes 310 a similarity cost map whichis used to obtain the displacement vectors for at least some of thepoints on the warp line. The similarity cost map is an array of valueswhere individual rows represent individual points on the warp line andindividual columns represent displacement vectors (where thedisplacement vectors are constrained). A least similarity cost paththrough the similarity cost map is calculated in any suitable manner,such as by using dynamic programming. The values of the displacementvectors are constrained so that the problem of finding the displacementvectors is reduced to a one dimensional problem. This is achieved invarious different ways. For example, by constraining the displacementvectors to be in a single direction parallel to the warp line. Inanother example, the displacement vectors are constrained to be parallelto gradients in a patch surrounding the associated warp point.Constraining the displacement vectors improves efficiency, and yet isfound to give good quality results in practice.

A similarity metric is computed 322 to measure degree of similarity oflocal neighborhoods around image points in the two images. Anysimilarity metric is used such as the sum of absolute pixel-wiseintensity differences in a neighborhood around a pixel location (for agiven color band), or the average pixel-wise intensity difference, orthe sum of squared pixel-wise intensity differences or other similaritymetric. For a given warp point the similarity metric is calculated for aplurality (such as a range) of different possible displacements in thedirection of the warp line. For example, by calculating intensitydifferences between pixels around the warp tessellation location andaround a location displaced by a specified amount from the warptessellation location. The results are plotted in a graph such as thatof FIG. 5 for a single warp tessellation location p_(i). A lowsimilarity cost in the graph of FIG. 5 represents a high degree of localsimilarity between the neighborhood around the warp point location inthe first image and the neighborhood around the displaced position inthe second image. The process is repeated for each warp tessellationlocation to fill the values in the similarity cost map. By usingpossible displacements in the direction of the warp line (such asvertically up or vertically down) the problem of finding displacementvectors is reduced to a one dimensional problem and this improvesefficiency of the process. It is found that in practice, reducing theproblem to a one-dimensional problem in this way still enables highquality results to be obtained.

Computing the similarity cost map is relatively resource intensive andthe processes is parallelized in some cases by using one thread per warpgrid location and executing the threads in parallel. This is possiblesince the computation of the displacement vectors for one warptessellation location is independent of other warp tessellationlocations.

The similarity cost map comprises a large number of possibledisplacement vectors for each warp point (on the warp line). To selectone of these displacement vectors it is possible to pick thedisplacement vector with the lowest similarity cost (highest localsimilarity between the two images). However, due to noise, exposuredifferences, movement in the scene, movement of the camera, this isfound to introduce severe artifacts. It has been found that byconstraining the difference in displacement between adjacent warppoints, it is possible to reduce artifacts and achieve good qualityresults.

Constraining the difference in displacement between adjacent warp pointsso that the difference in displacement is smooth and gradual rather thandiscontinuous and/or having abrupt changes, is achieved by finding aleast similarity cost path through the similarity cost map. FIG. 6 showsa similarity cost map in schematic form with the symbol d denoting thedisplacement vectors (in the direction of the warp line) of the columnsand the symbol P_(i) denoting the warp tessellation points of the rows.An entry in a cell of the similarity cost map is the value of thesimilarity metric calculated for the displacement vector and warptessellation point specified by the column and row of the cell. In theschematic similarity cost map of FIG. 6 regions where the values in thecells indicate poor similarity are marked with zig-zag lines 602. Aleast similarity cost path through the similarity cost map is depictedas line 604.

In order to calculate a least similarity cost path through thesimilarity cost map, dynamic programming is used in some examples 324.However, this is not essential as other methods of optimization are usedin some cases. Dynamic programming comprises breaking down anoptimization problem into sub-problems, solving each of the sub-problemsonce and storing their solutions (in a matrix M in the example below).During search for an optimal solution, the next time the samesub-problem occurs, the search process looks up the previously computedsolution.

An example in which dynamic programming is used to find the leastsimilarity cost path through the similarity cost map is now given. Inthis example, the tessellation of warp points is a grid. In this exampledynamic programming with a top-down approach is used whereby the problemis first broken down into sub-problems and then the process calculatesand stores values. The dynamic programming process comprises twoconsecutive steps. First, the cumulative (also referred to asaccumulated) similarity costs C(Pi; d) are computed for every pair (Pi;d) and stored in a matrix M which has the same dimensions as thesimilarity cost map. The accumulated similarity cost is calculated usingthe following equation:

C(P_(i), d) = cost(P_(i), d) + min (C(P_(i) − 1, d − n), C(P_(i) − 1, d − n + 1), …  , C(P_(i) − 1, d + n)which may be expressed in words as the accumulated similarity cost forwarp point P_(i) and displacement vector d is equal to the similaritycost from the similarity cost map for the warp point P_(i) anddisplacement vector d, plus the minimum of the similarity costs, fromthe row immediately above the row P_(i) in the similarity cost map, forany of the locations in the range d−n to d+n, where n is a userconfigurable parameter having an integer value which specifies an upperlimit on the magnitude of the change in displacement between adjacentrows of the second image. In an example, n=1 although other values of nmay be used.

In the second step, the best path is reconstructed by tracing back thebest moves stored in M starting from the bottom row until the origin toprow of M is reached. Once the best path is computed, the displacementvectors along the least similarity cost path are looked up and assigned312 to the respective warp grid points.

In some examples, content of the second image is examined to check forthe presence of transitions between foreground and background. Locationsof such transitions are optionally taken into account when computing theleast similarity cost path using dynamic programming. This is explainedin more detail below with reference to FIG. 7.

In practice, it is found that using dynamic programming to compute theleast similarity cost path through the similarity cost map gives goodworking results in many situations and at the same time, is efficient tocompute. In particular, use of the dynamic programming enables the imagestitching component to constrain the difference in displacement betweenadjacent warp points, and so reduce artifacts and achieve good qualityresults. By using dynamic programming it is possible to optimize thewarp points simultaneously to minimize the similarity cost function andthis enables high quality results to be achieved.

At this point in the process (end of operation 312) the warp pointswhich are on the warp line have displacement vectors assigned to them.Other warp points in the warp tessellation do not yet have displacementvectors. To calculate appropriate displacement vectors for the remainingwarp points, these are interpolated 314 from the displacement vectors ofthe warp points on the warp line. Linear interpolation is found to givegood results. Other more complex interpolation methods are used in someexamples according to a trade-off between computational similarity costand quality of results. More detail about an example linearinterpolation process is now given with reference to FIG. 4.

FIG. 4 shows a first image 400 and a second image 402 which have beenaligned according to operation 302 to give a region of overlap 404. Awarp line 406 is positioned in the overlapping region and has four warppoints on it 408, 414, 412. In practice there are many more warp pointsalthough for clarity only four are shown. In the example of FIG. 4 thewarp tessellation is in the form of a grid for simplicity ofexplanation. However, it is not essential to use a grid, as any othertype of tessellation is possible using triangles, hexagons or othertessellating shapes and where points of the tessellation are at verticesof the tessellating shapes and/or at centers of the tessellating shapes.

In the example of FIG. 4 a warp grid is positioned over the overlappingregion and part of the warp grid is shown in box 410 in magnified form.The warp line has two of the warp points 412 and 414 visible in themagnified region. Additional other warp points are present in the warpgrid such as points 416. The warp line is used simply as a way to selectpoints of the tessellation for which displacement vectors are calculateddirectly by comparing the first and second images, rather than byinterpolation. The warp line is straight in some examples and in otherexamples it is curved. The warp line is any substantially continuouspath.

The displacement vectors for warp points 414 and 412 are known fromleast similarity cost path of the similarity cost map and are indicatedas arrows from points 414 and 412 where the length of the arrowindicates the magnitude of the displacement and the direction of thearrow indicates the direction of the displacement (which is constrainedto be vertically up or vertically down in this example). A zero valueddisplacement is assigned to pixel locations on the edge of theoverlapping region corresponding to the edge of the first image 400.Using the zero value displacement location and the displacement vectorof grid point 412 a line is interpolated 418 and used to inferdisplacement vectors of the other warp grid point associated with theline. This is one example of how interpolation is achieved althoughothers are possible. Multi-threading is used to parallelize computationof the interpolation in some examples, by using one thread per row ofthe grid (or other tessellation) and using a parallel computing unitsuch as a graphics processing unit.

After the interpolation operation 314 the warp tessellation points havedisplacement vectors associated with them. The warp tessellation,populated with the displacement vectors, is used to warp 316 theoverlapping region of the second image. This is done by moving intensityvalues from pixel locations in the overlapping region of the secondimage according to the displacement vectors specified in the warptessellation overlying the overlapping region. In this way parallax iscorrected for without introducing artifacts since the warp tessellationhas been calculated in a manner which takes into account the leastsimilarity cost path in the similarity cost map. By warping only a partof the second image (the overlapping region), to make it align locallyto the first image it is being stitched into, it is found thatefficiencies are gained whilst still achieving good quality results. Insome examples multi-threading is used to implement the warping process.For example, using one thread per row of the warp tessellation and usinga parallel computing unit such as a graphics processing unit.

In some examples, the warp tessellation extends beyond the overlappingregion into the second image. In this case the second image is warpedbeyond the overlapping region as well as in the overlapping region.

A seam is computed 318 between the first image and the warped secondimage. The seam is a boundary between the first and second images whichis an irregular line computed to give an optimal join. In an example,the seam is computed by using a second similarity cost map where thesimilarity metric is an absolute difference in intensity values betweenthe first and second images in a given color space. The secondsimilarity cost map is a 2D array corresponding to the overlappingregion. A lowest similarity cost path is computed through the secondsimilarity cost map to find a route where the color difference islowest. This route is taken as the seam and used to stitch 320 the twoimages together. The stitching is implemented using multi-threading insome cases by using one thread per row of pixels and using a parallelcomputing unit such as a graphics processing unit.

In some examples, the problem of computing the displacement vectors forthe warp points on the warp line is formulated as a Markov random field(MRF) optimization rather than as a dynamic programming problem.Formulating the problem as an MRF optimization problem allowsinformation about color in the images to be used. This is morecomputationally expensive than using dynamic programming and is found togive good results, such as by giving areas of similar color the samedisplacement. In this method no explicit constraint is inferred on thedisplacement vectors.

A Markov random field is a set of random variables described by anundirected graph and where the random variables have a memory-lessproperty (depending only upon the present state and not the sequence ofevents that preceded it) of a stochastic process. Edges of theundirected graph are assigned values according to color similaritybetween neighboring pixels in the panoramic image (the image beingcreated). The warp points on the warp line are represented as verticesof the graph. A data penalty function of the Markov random field is afunction of the displacement similarity cost (as described above withreference to FIG. 5) and displacements for each point are randomvariables of the Markov random field to be optimized.

FIG. 7 shows a schematic diagram of a similarity cost map in the casethat a transition between foreground and background is present alongline 708. For example, where a foreground object is closer to the camerathan the background. In this situation a method that constrains thedifference between adjacent warp points, such as the dynamic programmingmethod described above, when used to compute a lowest similarity costpath in the similarity cost map, computes route 702 to 704. That is, itcomputes a path which passes through a high similarity cost region(where the dotted line 704 passes through zig-zags). Using the MRFformulation the path 706 is calculated. In the case of a method thatconstrains the difference between adjacent warp points, the process ofcomputing the least similarity cost path using dynamic programming ismodified to take into account transitions between foreground andbackground in the second image. For example, this is done by adding aninteraction potential term in the accumulated similarity cost functiondescribed above.

FIG. 8 illustrates various components of an exemplary computing-baseddevice 800 which are implemented as any form of a computing and/orelectronic device, and in which embodiments of an image stitchingcomponent are implemented in some examples.

Computing-based device 800 comprises one or more processors 802 whichare microprocessors, controllers or any other suitable type ofprocessors for processing computer executable instructions to controlthe operation of the device in order to stitch two or more imagestogether to form a panoramic image. In some examples the processors 802include a parallel-processing unit such as a graphic processing unit. Insome examples, for example where a system on a chip architecture isused, the processors 802 include one or more fixed function blocks (alsoreferred to as accelerators) which implement a part of the method ofFIG. 3 in hardware (rather than software or firmware). Platform softwarecomprising an operating system 804 or any other suitable platformsoftware is provided at the computing-based device to enable applicationsoftware 806 to be executed on the device. A data store 810 holdsimages, similarity cost maps, warp grids or other data. An imagestitching component 808 is stored in memory 816 as computer executableinstructions in some examples.

The computer executable instructions are provided using anycomputer-readable media that is accessible by computing based device800. Computer-readable media includes, for example, computer storagemedia such as memory 816 and communications media. Computer storagemedia, such as memory 816, includes volatile and non-volatile, removableand non-removable media implemented in any method or technology forstorage of information such as computer readable instructions, datastructures, program modules or the like. Computer storage mediaincludes, but is not limited to, random access memory (RAM), read onlymemory (ROM), erasable programmable read only memory (EPROM), electronicerasable programmable read only memory (EEPROM), flash memory or othermemory technology, compact disc read only memory (CD-ROM), digitalversatile disks (DVD) or other optical storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other non-transmission medium that is used to store informationfor access by a computing device. In contrast, communication mediaembody computer readable instructions, data structures, program modules,or the like in a modulated data signal, such as a carrier wave, or othertransport mechanism. As defined herein, computer storage media does notinclude communication media. Therefore, a computer storage medium shouldnot be interpreted to be a propagating signal per se. Although thecomputer storage media (memory 816) is shown within the computing-baseddevice 800 it will be appreciated that the storage is, in some examples,distributed or located remotely and accessed via a network or othercommunication link (e.g. using communication interface 812).

The computing-based device 800 also comprises an input/output controller814 arranged to output display information to a display device 818 (suchas a display to show the panoramic images) which may be separate from orintegral to the computing-based device 800. The display information mayprovide a graphical user interface. The input/output controller 814 isalso arranged to receive and process input from one or more devices,such as a user input device 820 (e.g. a mouse, keyboard, camera,microphone or other sensor). In some examples the user input device 820detects voice input, user gestures or other user actions and provides anatural user interface (NUI). This user input may be used to capturedigital photographs, select images to be stitched together, viewpanoramic images generated by the image stitching component, or forother purposes. In an embodiment the display device 818 also acts as theuser input device 820 if it is a touch sensitive display device. Theinput/output controller 814 outputs data to devices other than thedisplay device in some examples, e.g. a locally connected printingdevice.

Any of the input/output controller 814, display device 818 and the userinput device 820 may comprise NUI technology which enables a user tointeract with the computing-based device in a natural manner, free fromartificial constraints imposed by input devices such as mice, keyboards,remote controls and the like. Examples of NUI technology that areprovided in some examples include but are not limited to those relyingon voice and/or speech recognition, touch and/or stylus recognition(touch sensitive displays), gesture recognition both on screen andadjacent to the screen, air gestures, head and eye tracking, voice andspeech, vision, touch, gestures, and machine intelligence. Otherexamples of NUI technology that are used in some examples includeintention and goal understanding systems, motion gesture detectionsystems using depth cameras (such as stereoscopic camera systems,infrared camera systems, red green blue (rgb) camera systems andcombinations of these), motion gesture detection usingaccelerometers/gyroscopes, facial recognition, three dimensional (3D)displays, head, eye and gaze tracking, immersive augmented reality andvirtual reality systems and technologies for sensing brain activityusing electric field sensing electrodes (electro encephalogram (EEG) andrelated methods).

In some examples the image stitching component 914 is integral with adigital camera 912 as now described with reference to FIG. 9.

A digital camera 912 comprises an image sensor 902 that receives lightreflected from objects within the scene. The image sensor 204 comprisesa charge-coupled device (CCD) sensor, a complementarymetal-oxide-semiconductor (CMOS) sensor, for example a Photonic MixerDevice (PMD) sensor or other appropriate sensor which is arranged todetect light reflected and emitted from objects, people and surfaceswithin the camera range.

The camera comprises an optical system 904 that is arranged to gatherand focus reflected light from the environment on to the image sensor902. The camera comprises driver electronics 906 which control the imagesensor 902 and the optical system 904. An image sensor may be shutteredon and off electronically rather than with physical shutters.

In one example the camera comprises a processor 908 and a memory 910which stores sensor data from the image sensor 902. Where, an imagestitching component 914 is at the camera it comprises software stored atmemory 910 and executed at processor 908 in some cases. In some examplesthe image stitching component 914 is a field programmable gate array(FPGA) or a dedicated chip. For example, the functionality of the imagestitching component 914 is implemented, in whole or in part, by one ormore hardware logic components. For example, and without limitation,illustrative types of hardware logic components that can be used includeField-programmable Gate Arrays (FPGAs), Application-specific IntegratedCircuits (ASICs), Application-specific Standard Products (ASSPs),System-on-a-chip systems (SOCs), Complex Programmable Logic Devices(CPLDs), Graphics Processing Units (GPUs).

Alternatively or in addition to the other examples described herein,examples include any combination of the following:

A computing device comprising:

a memory holding at least two input images depicting different parts ofa panoramic scene, the images having been captured by a user moving thecamera to capture the panorama; and

an image stitching component configured to identify, at a processor, aregion of overlap between the at least two images;

the image stitching component arranged to calculate a displacementvector for each of a plurality of warp points in the region of overlap;

the image stitching component arranged to warp a second one of the atleast two images using the warp points, and to join the warped secondimage to the first image.

A computing device as described in the paragraph immediately above wherethe image stitching component is arranged to warp the second image onlyin the region of overlap.

A computing device as described above where the image stitchingcomponent is arranged to calculate individual ones of the displacementvectors in a single direction.

The computing device described above where the single dimension is adirection parallel to an intensity gradient in a neighborhood around awarp point.

A computing device as described above where the image stitchingcomponent is arranged to calculate the displacement vectors byconstraining a difference in displacement vectors between adjacent onesof the warp points.

The computing device described in the paragraph immediately above wherethe image stitching component is arranged to constrain the difference indisplacement vectors by using dynamic programming.

The computing device described above where the image stitching componentis arranged to calculate a first plurality of the displacement vectorson the basis of a measure of local similarity between the first andsecond images.

The computing device described above where the image stitching componentis arranged to calculate the first plurality of displacement vectors bysearching over possible displacement vectors for each of the firstplurality of displacement vectors simultaneously.

The computing device described above where the image stitching componentis arranged to calculate a first plurality of the displacement vectorsfor some but not all of the warp points.

The computing device described above where the image stitching componentis arranged to calculate a second plurality of the displacement vectorsby interpolation from the first plurality of the displacement vectors.

The computing device described above where the image stitching componentcomputes a similarity cost map comprising a two dimensional array wherecolumns represent possible displacement vectors and rows representindividual warp points, and where a value in a cell of the array is ameasure of local similarity between the first and second images for thewarp point and displacement vector specified by the cell location in thearray.

The computing device described above where the image stitching componentcomputes a least similarity cost path through the similarity cost mapand assigns displacement vectors on the least similarity cost path tothe associated warp points.

The computing device described above where the image stitching componentcomputes the least similarity cost path by taking into account imagecontent of the second image.

The computing device described above where the image stitching componentcomprises a parallel computing unit and where individual rows of thearray are computed using individual execution threads of the parallelcomputing unit.

The computing device described above where the image stitching componenttakes into account the image content of the second image by includinginteraction potentials in an accumulated similarity cost function.

The computing device described above where the image stitching componentis arranged to compute a seam between the warped second image and thefirst image by computing a path in the region of overlap, where the pathfollows a route with least difference in color between the first imageand the warped second image.

The computing device described above where the computing device is adigital camera.

The computing device described above where the image stitching componentis at least partially implemented using hardware logic selected from anyone or more of: a field-programmable gate array, an application-specificintegrated circuit, an application-specific standard product, asystem-on-a-chip, a complex programmable logic device, a graphicsprocessing unit.

A method of forming a panoramic image comprising:

receiving at least two input images depicting different parts of apanoramic scene, the images having been captured by a user moving thecamera to capture the panorama;

identifying, at a processor, a region of overlap between the at leasttwo images;

calculating a displacement vector for each of a plurality of warp pointsin the region of overlap;

warping a second one of the at least two images using the warp points;and

joining the warped second image to the first image.

The method described above comprising calculating the displacementvectors in a single dimension.

A computing device comprising:

a memory holding at least two input images depicting different parts ofa panoramic scene, the images having been captured by a user moving thecamera to capture the panorama; and

an image stitching component that identifies, at a processor, a regionof overlap between the at least two images;

the image stitching component calculating a displacement vector for eachof a plurality of warp points in the region of overlap, where thedisplacement vectors are constrained to be in a single direction;

the image stitching component warping a second one of the at least twoimages using the warp points, and joining the warped second image to thefirst image.

The examples illustrated and described herein as well as examples notspecifically described herein but within the scope of aspects of thedisclosure constitute exemplary means for stitching images together toform a panoramic image. For example, the memory of FIG. 1, FIG. 8. andFIG. 9, constitutes exemplary means for holding at least two inputimages depicting different parts of a panoramic scene, the images havingbeen captured by a user moving the camera by hand to capture thepanorama. The processor of FIG. 1, FIG. 8. and FIG. 9 constitutesexemplary means for identifying, a region of overlap between the atleast two images. The image stitching component of FIG. 1, FIG. 8. andFIG. 9 constitutes exemplary means for calculating a displacement vectorfor each of a plurality of warp points of a warp grid in the region ofoverlap in a direction of an axis of the region of overlap. The imagestitching component of FIG. 1, FIG. 8. and FIG. 9 constitutes exemplarymeans for warping a second one of the at least two images using the warpgrid. The image stitching component of FIG. 1, FIG. 8. and FIG. 9constitutes exemplary means for joining the warped second image to thefirst image.

The term ‘computer’ or ‘computing-based device’ is used herein to referto any device with processing capability such that it executesinstructions. Those skilled in the art will realize that such processingcapabilities are incorporated into many different devices and thereforethe terms ‘computer’ and ‘computing-based device’ each include personalcomputers (PCs), servers, mobile telephones (including smart phones),tablet computers, set-top boxes, media players, games consoles, personaldigital assistants, wearable computers, and many other devices.

The methods described herein are performed, in some examples, bysoftware in machine readable form on a tangible storage medium e.g. inthe form of a computer program comprising computer program code meansadapted to perform all the operations of one or more of the methodsdescribed herein when the program is run on a computer and where thecomputer program may be embodied on a computer readable medium. Thesoftware is suitable for execution on a parallel processor or a serialprocessor such that the method operations may be carried out in anysuitable order, or simultaneously.

This acknowledges that software is a valuable, separately tradablecommodity. It is intended to encompass software, which runs on orcontrols “dumb” or standard hardware, to carry out the desiredfunctions. It is also intended to encompass software which “describes”or defines the configuration of hardware, such as HDL (hardwaredescription language) software, as is used for designing silicon chips,or for configuring universal programmable chips, to carry out desiredfunctions.

Those skilled in the art will realize that storage devices utilized tostore program instructions are optionally distributed across a network.For example, a remote computer is able to store an example of theprocess described as software. A local or terminal computer is able toaccess the remote computer and download a part or all of the software torun the program. Alternatively, the local computer may download piecesof the software as needed, or execute some software instructions at thelocal terminal and some at the remote computer (or computer network).Those skilled in the art will also realize that by utilizingconventional techniques known to those skilled in the art that all, or aportion of the software instructions may be carried out by a dedicatedcircuit, such as a digital signal processor (DSP), programmable logicarray, or the like.

Any range or device value given herein may be extended or alteredwithout losing the effect sought, as will be apparent to the skilledperson.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

It will be understood that the benefits and advantages described abovemay relate to one embodiment or may relate to several embodiments. Theembodiments are not limited to those that solve any or all of the statedproblems or those that have any or all of the stated benefits andadvantages. It will further be understood that reference to ‘an’ itemrefers to one or more of those items.

The operations of the methods described herein may be carried out in anysuitable order, or simultaneously where appropriate. Additionally,individual blocks may be deleted from any of the methods withoutdeparting from the scope of the subject matter described herein. Aspectsof any of the examples described above may be combined with aspects ofany of the other examples described to form further examples withoutlosing the effect sought.

The term ‘comprising’ is used herein to mean including the method blocksor elements identified, but that such blocks or elements do not comprisean exclusive list and a method or apparatus may contain additionalblocks or elements.

It will be understood that the above description is given by way ofexample only and that various modifications may be made by those skilledin the art. The above specification, examples and data provide acomplete description of the structure and use of exemplary embodiments.Although various embodiments have been described above with a certaindegree of particularity, or with reference to one or more individualembodiments, those skilled in the art could make numerous alterations tothe disclosed embodiments without departing from the spirit or scope ofthis specification.

The invention claimed is:
 1. A computing device comprising: a memoryholding at least two input images depicting different parts of apanoramic scene, the images having been captured by a user moving thecamera to capture the panorama; and an image stitching componentconfigured to identify, at a processor, a region of overlap between theat least two images; the image stitching component arranged to calculatea displacement vector for each of a plurality of warp points in theregion of overlap, where the image stitching component computes asimilarity cost map for possible displacement vectors and individualwarp points for first and second images of the at least two images, andwhere a value in a cell of the similarity cost map is a measure of localsimilarity between the first and second images for the warp point anddisplacement vector specified by the cell location in the array; theimage stitching component arranged to warp the second one of the atleast two images using the warp points, and to join the warped secondimage to the first image.
 2. The computing device of claim 1 where theimage stitching component is arranged to warp the second image only inthe region of overlap.
 3. The computing device of claim 1 where theimage stitching component is arranged to calculate individual ones ofthe displacement vectors in a single direction.
 4. The computing deviceof claim 3 where the single dimension is a direction parallel to anintensity gradient in a neighborhood around a warp point.
 5. Thecomputing device of claim 1 where the image stitching component isarranged to calculate the displacement vectors by constraining adifference in displacement vectors between adjacent ones of the warppoints.
 6. The computing device of claim 5 where the image stitchingcomponent is arranged to constrain the difference in displacementvectors by using dynamic programming.
 7. The computing device of claim 1where the image stitching component is arranged to calculate a firstplurality of the displacement vectors on the basis of a measure of localsimilarity between the first and second images.
 8. The computing deviceof claim 7 where the image stitching component is arranged to calculatethe first plurality of displacement vectors by searching over possibledisplacement vectors for each of the first plurality of displacementvectors simultaneously.
 9. The computing device of claim 1 where theimage stitching component is arranged to calculate a first plurality ofthe displacement vectors for some but not all of the warp points. 10.The computing device of claim 9 where the image stitching component isarranged to calculate a second plurality of the displacement vectors byinterpolation from the first plurality of the displacement vectors. 11.The computing device of claim 1 where the similarity cost map comprisesa two dimensional array where columns represent the possibledisplacement vectors and rows represent the individual warp points, andwhere the value in a cell of the array is the measure of localsimilarity between the first and second images for the warp point anddisplacement vector specified by the cell location in the array.
 12. Thecomputing device of claim 11 where the image stitching componentcomputes a least similarity cost path through the similarity cost mapand assigns displacement vectors on the least similarity cost path tothe associated warp points.
 13. The computing device of claim 12 wherethe image stitching component computes the least similarity cost path bytaking into account image content of the second image.
 14. The computingdevice of claim 13 where the image stitching component takes intoaccount the image content of the second image by including interactionpotentials in an accumulated similarity cost function.
 15. The computingdevice of claim 11 where the image stitching component comprises aparallel computing unit and where individual rows of the array arecomputed using individual execution threads of the parallel computingunit.
 16. The computing device of claim 1 where the image stitchingcomponent is arranged to compute a seam between the warped second imageand the first image by computing a path in the region of overlap, wherethe path follows a route with least difference in color between thefirst image and the warped second image.
 17. The computing device ofclaim 1 where the computing device is a digital camera.
 18. Thecomputing device of claim 1 where the image stitching component is atleast partially implemented using hardware logic selected from any oneor more of: a field-programmable gate array, an application-specificintegrated circuit, an application-specific standard product, asystem-on-a-chip, a complex programmable logic device, a graphicsprocessing unit.
 19. A method of forming a panoramic image comprising:receiving at least two input images depicting different parts of apanoramic scene, the images having been captured by a user moving thecamera to capture the panorama; identifying, by a processor, a region ofoverlap between the at least two images; calculating a displacementvector for each of a plurality of warp points in the region of overlapby computing a similarity cost map for possible displacement vectors andindividual warp points of the plurality of warp points for first andsecond images of the at least two images, where a value in a cell of thesimilarity cost map is a measure of local similarity between the firstand second images for the warp point and displacement vector specifiedby the cell location in the array; warping the second one of the atleast two images using the warp points; and joining the warped secondimage to the first image.
 20. One or more computer storage media havingcomputer-executable instructions for forming a panoramic image that,upon execution by a processor, cause the processor to at least: receiveat least two input images depicting different parts of a panoramicscene, the images having been captured by a user moving the camera tocapture the panorama; identify, by a processor, a region of overlapbetween the at least two images; calculate a displacement vector foreach of a plurality of warp points in the region of overlap by computinga similarity cost map for possible displacement vectors and individualwarp points of the plurality of warp points for first and second imagesof the at least two images, and where a value in a cell of thesimilarity cost map is a measure of local similarity between the firstand second images for the warp point and displacement vector specifiedby the cell location in the array; warp the second one of the at leasttwo images using the warp points; and join the warped second image tothe first image.